<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        //定义变量一般用var  不用var的时候，则为全局变量
        function fun0(){
            a=100 //在函数内部定义全局变量
        }
        fun0()
        console.log(a)//100 全局变量

        // 遮蔽效果
        //如果函数中也定义了和全局变量同名的变量，则函数内的变量会将全局变量遮蔽

        //注意考虑变量声明提升的情况
        var a=10//全局变量
        function fun(){
            a++//局部变量。下面定义的局部变量a被自增1，但是，此时a的提升只提升定义，所以是undefined，自增1结果为NaN
            var a=5//局部变量，重新将a赋值为5
            console.log(a)//5  局部变量
        }
        fun()
        console.log(a)//10 全局变量 局部变量不会影响全局变量

        //没有局部变量，只有全局变量
        var m=1;//全局变量
        function fun1(){
            m++;//全局变量
        }
        console.log(m)//1 全局变量
        fun1()
        console.log(m)//2 全局变量

        //如果有局部变量遮蔽全局变量，则局部变量不会 改变全局变量
        var n=1;//全局变量
        function fun1(){
            n++;//局部变量
            var n;//局部变量
        }
        console.log(n)//1 全局变量
        fun1()
        console.log(n)//1 全局变量

        //形参也是局部变量
        var b=10//全局变量
        function fun2(b){//形参相当于定义了局部变量
            b++//局部变量
            console.log(b)//8 局部变量
        }
        fun(7)
        console.log(b)//10 全局变量
    </script>
</body>
</html>